windows批处理编程

1> 运算操作

1.1 算数运算

1.1.1 命令模式

set /a  1+2

1.1.2 文本模式

@echo off

set /a var = 10 * (10-6)
echo %var%

pause

1.2 重定向运算

1.2.1 输出重定向

echo "hello world" > a.txt  # 覆盖输出
echo "hello world" > a.txt  # 追加输出
type  a.txt  # 查看输出

1.3 多命令运算

1.3.1 &&

与运算,具有短路特性,第一个命令错误不会执行第二个命令

ipconfig && net user

1.3.2 ||

或运算,具有短路特性,第一个命令正确则不会执行第二个命令

ifconfig || net user

1.4 管道运算

dir | find ".txt"
netstat -an  # 查看网络端口
netstat -an | find "ESTABLISHED"

2> 基本命令

2.1 命令格式

命令格式: 命令 子命令 参数 操作 选项

帮助信息查看: /? 或 /help

net user /?
net user /help

2.2 参数传递

.bat文件接受参数使用%num

net user  %1  %2  /add

注释符: rem comment

2.3 炫酷命令提示符

2.3.1 颜色命令

color 0a   # 第一个为背景颜色,第二个为前景颜色

2.3.2 标题命令

title 'hack'

2.4 时间相关命令

2.4.1 date

date /t

2.4.2 time

time /t

2.5 启动命令

start test.bat

2.6 调用其他bat文件

call test.bat

2.7 任务列表查看命令

tasklist  # 显示进程列表
tasklist /S 192.168.1.10 /U administartor /P admin1234
taklist /FI "status eq running"  # 使用筛选器

2.8 任务关闭命令

taskkill  /im  notepad.exe  # 关闭记事本
taskkill /pid 15236 /t  # 关闭进程及其子进程

2.9 文件夹结构查看命令

tree

2.10 关机命令

shutdown /s /t 1200

2.11 计划任务命令

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly /d 15 /m MAY,JUN /st 15:00:00  # 计划 MyApp 程序在五月 15 日和六月 15 日的 3:00 PM (15:00) 运行

3> 文件夹和文件命令

命令 说明 示例
dir 浏览目录 dir -a
mkdir 或md 新建目录 md a/b/test
rmdir 或 rd 删除目录 rd test
cd 切换目录 cd C:/360
ren 目录重命名 ren test test_new
copy 目录拷贝 copy test test_new
del 文件删除 del abc.txt
move 文件剪切命令 move abc.text abc_new.txt

4> 网络相关命令

4.1 用户操作命令

net user
net user admin /delete  # 删除用户
net user admin /add        # 添加用户

4.2 用户组操作命令

net  localgroup administrators  admin  /add  # 将admin用户添加到管理员用户组中
net user  admin  # 查看admin用户

4.3 网络连通检测命令

ping www.baidu.com

4.4 路由信息查看

tracert 61.135.169.125

4.5 网络适配器

ipconfig  /all
ipconfig  /renew     # 重新获取ip地址

4.6 ARP信息

arp -a

5> 条件判断结构

@echo off
rem 判断字符串是否是规定的字符串
set v=hello
if %v%==hello (echo ok) else (echo no)
pause>nul
@echo off
rem 判断文件是否存在

if exist 1.bat(echo ok) esle (echo no)

pause
@echo off
if exist abe.txt(
    echo file is find!
)else(
    echo file is not found
)
pause

6> 循环结构

6.1 遍历目录

@echo off
rem 遍历文件夹
for /d  %%a in (*) do if %%a==test rd %%a
for /d  %%a in (*) do echo %%a
pause

6.2 遍历目录和子目录下的文件

@echo off
for /r "C:\CH067" %%v in (*.py)  do echo %%v

echo delete  all  *.py

for /r "C:\CH067" %%v in (*.py)  do del %%v
pause

6.3 遍历数字

@echo off

for /L %%v in (1, 3, 20) do echo ping %1.%%v
pause

6.4 遍历文件内容

@echo off
for /f %%v in (3.bat) do echo %%v
pause

7> 目录迭代

@echo off
pause

cd c:/loc
:loop
md virs
cd vies
goto loop

pause> nul
exit